#!/usr/bin/env python
# Licensed to Cloudera, Inc. under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  Cloudera, Inc. licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from django.http import StreamingHttpResponse

from desktop.lib.rest.http_client import HttpClient

CHUNK_SIZE = 16 * 1024

def stream_response(client, url):
  stream_resp = client.execute("GET", url, stream=True);
  response = StreamingHttpResponse(_stream_generate(stream_resp), content_type=stream_resp.headers.get('Content-Type'))
  response['Content-Disposition'] = stream_resp.headers.get('Content-Disposition')

  return response

def _stream_generate(zip_resp):
  for chunk in zip_resp.iter_content(CHUNK_SIZE):
    yield chunk
